import { createStore } from 'vuex'

// Vuex@3
// import Vuex from 'vuex'
// new Vuex.Store()

export default createStore({
  // state: {}
  state: () => ({
    money: 100,
  }),
  mutations: {
    // 外界通过 commit 触发 mutation 的时候需要传递一个 money
    changeMoney(state, money) {
      state.money += money
    },
  },
  actions: {
    // 外界通过 dispatch 出发 action 并传参
    changeMoneyAsync(context, money) {
      setTimeout(() => {
        context.commit('changeMoney', money)
      }, 1000)
    },
  },
  getters: {
    double(state) {
      return state.money * 2
    },
  },
})
